//
// Created by Administrator on 2023/11/5.
//
/*
 * https://www.luogu.com.cn/problem/T215112
 * https://oj.ilingxin.cn/p/1228
 * 信息学奥赛一本通 例题6.1 题目一样
 * https://blog.csdn.net/qq_45949914/article/details/104242502
 *排队打水问题--贪心

题目描述 有n个人排队到m个水龙头去打水，他们装满水桶的时间t1, t2 , ……, tn为整数且各不相同，应如何安排他们的打水顺序才能使他们花费的总时间最少? 只有一组输入数据哦。
输入格式

输入 4 2 （ n m ） 2 6 4 5 （t1 t2 …… tn）
输出格式

输出 23（所有人的花费时间总和）
输入输出样例
输入 #1
4 2
2 6 4 5
输出 #1
23
 *
 * */
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int n = 4, m = 2, j = 0, ret = 0;
    cin >> n >> m;
    int p[n] = {2, 6, 4, 5};
    int s[m+1]={0};
    for (int i = 0; i < n; ++i)
        cin >> p[i];
    sort(p,p+n);
    for (int i = 0; i < n; ++i)
    {
        ++j;
        if(j==m+1)
            j=1;
        s[j]+=p[i];
        ret+=s[j];
    }
    cout<<ret;
    return 0;
}